<script>
    class Pet {  
    #age; // 私有属性  
    #nickname; // 私有属性  
    
    constructor(nickname, age) {  
      this.#nickname = nickname;  
      this.age = age; // 使用 setter 方法设置年龄  
    }  
    
    // Getter 方法  
    get nickname() {  
      return this.#nickname;  
    }  
    
    // Setter 方法  
    set nickname(value) {  
      this.#nickname = value;  
    }  
    
    // Getter 方法  
    get age() {  
      return this.#age;  
    }  
    
    // Setter 方法  
    set age(value) {  
      if (typeof value !== 'number' || value < 0 || value > 30) {  
        throw new Error('年龄必须在0到30之间');  
      }  
      this.#age = value;  
    }  
  }  
    
  class Dog extends Pet {  
    #color; // 私有属性  
    
    constructor(nickname, age, color) {  
      super(nickname, age); // 调用父类构造函数  
      this.#color = color;  
    }  
    
    // Getter 方法  
    get color() {  
      return this.#color;  
    }  
    
    // Setter 方法  
    set color(value) {  
      this.#color = value;  
    }  
  }  
    
  // 测试代码  
  try {  
    let dog = new Dog('旺财', 3, '黄色');  
    console.log("宠物昵称：", dog.nickname);  
    console.log("宠物年龄：", dog.age);  
    console.log("宠物颜色：", dog.color);  
    dog.age = 40; // 这将抛出异常  
  } catch (error) {  
    console.error("发生错误：", error.message);  
  }
</script>